-- UIBuyConfirm
-- Create by chengb Nov/25/2014
-- 简单购买提示框界面（例如：购买体力）

--UIBuyConfirm继承自Layer
UIBuyConfirm = class("UIBuyConfirm", function()
    return cc.Layer:create()
end)

-- @param msg        提示框的内容
-- @param costBrief  消耗简介
-- @param payAttrib  支付的属性(如：gem, money)
-- @param costAmount 支付的属性数量
-- @param okFunc     点击确认的处理函数
-- @param args       okFunc所需的参数列表（当参数超过1个时，这里通常传入table类型）
-- @param okText     确认按钮文本(默认显示'确认')
function UIBuyConfirm.create(msg, costBrief, payAttrib, costAmount, okFunc, args, okText)
    return UIBuyConfirm.new(msg, costBrief, payAttrib, costAmount, okFunc, args, okText)
end

-- 内部函数声明
local resize;

-- 构造函数
function UIBuyConfirm:ctor(msg, costBrief, payAttrib, costAmount, okFunc, args, okText)
    -- 初始化
    local node = cc.CSLoader:createNode("layout/dialog/BuyConfirm.csb");
    self:addChild(node);

    local panel = findChildByName(node, "img_panel")

    -- 设置内容
    local contentLabel = panel:getChildByName("content")
    contentLabel:setString(msg)

    -- 设置消耗简介（需要设置2像素描边）
    local costBar = panel:getChildByName("cost_bar")
    local costBriefLabel = costBar:getChildByName("cost_brief");
    costBriefLabel:setString(costBrief);
    TextStyleM.setOutlineStyle(costBriefLabel);

    -- 设置消耗的属性的图标
    local costImg = costBar:getChildByName("cost_img");
    if payAttrib == "money" then
        costImg:loadTexture(getMoneyIconPath());
    elseif payAttrib == "gem" then
        costImg:loadTexture(getGoldIconPath());
    else
        error("暂不支持支付属性：" .. payAttrib);
    end

    local costAmountLabel = costBar:getChildByName("amount");
    costAmountLabel:setString("" .. costAmount);

    local okBtn = panel:getChildByName("btn_ok");
    if type(okText) == 'string' then
        okBtn:setTitleText(okText);
    else
        okBtn:setTitleText("确认");
    end

    -- 注册确认按钮点击事件
    local function onOkClick(sender, eventType)
        if eventType == ccui.TouchEventType.ended then
            AudioM.playFx("button_select");

            UIMgr.getCurrentScene():removeDialog(self);
            if type(okFunc) == 'function' then
                okFunc(args);
            end
        end
    end
    okBtn:addTouchEventListener(onOkClick);

    -- 注册取消按钮点击事件
    local canelBtn = panel:getChildByName("btn_cancel")
    local function onCancelClick(sender, eventType)
        if eventType == ccui.TouchEventType.ended then
            AudioM.playFx("button_return");
            UIMgr.getCurrentScene():removeDialog(self);
        end
    end
    AddBackEventHandler(self, canelBtn, onCancelClick);

    -- 设置按钮标题的描边
    TextStyleM.setOutlineStyle(okBtn:getTitleRenderer());
    TextStyleM.setOutlineStyle(canelBtn:getTitleRenderer());

    -- 重新调整布局
    resize(node)
end

-- 重新调整布局
resize = function(node)
    local w = AlignM.frameSize.width;
    local h = AlignM.frameSize.height;

    -- bg居中显示并充满整个屏幕
    AlignM.fitToScreen(node, "bg");

    -- 确认框居中并缩放到合适大小
    AlignM.alignToCenter(node, "img_panel");
end

return UIBuyConfirm
